<?php

namespace app\common\model\setting;
use app\common\model\file\FileModel;
use app\common\model\Merchant\MerchantShopModel;
use app\common\model\product\ShopProductTypeAttributesModel;
use app\common\model\product\ShopProductTypeModel;
use think\Model;

class SettingStorePlatformModel extends Model
{
    // 表名
    protected $name = 'setting_store_platform';
    // 表主键
    protected $pk = 'id';
    const CODE_TM = 'tianmao';//天猫
    const CODE_TB = 'taobao';//淘宝

    /**
     * 查询淘宝、天猫ids
     * @Author: 易军辉
     * @DateTime:2024-08-23 22:09
     */
    public static function getTaobaoIds()
    {
        return self::whereIn('code',[self::CODE_TB,self::CODE_TM])->where('is_disable',0)->where('is_delete',0)->column('id');
    }


    /**
     * 淘宝或者天猫id特殊处理
     * @Author: 易军辉
     * @DateTime:2024-10-16 18:06
     * @param $store_platform_id
     * @return array
     */
    public static function handleTaobaoIds($store_platform_id)
    {
        if(!$store_platform_id){
            return $store_platform_id;
        }
        $taobao_ids =self::getTaobaoIds();
        //判断是数组还是
        if(is_array($store_platform_id)){
            $is_exist = false;
            foreach ($store_platform_id as $key=>$val){
                $store_platform_id[$key] = (int)$val;
                if(in_array($val,$taobao_ids)){
                    $is_exist = true;
                    break;
                }
            }
            if($is_exist){
                return array_unique(array_merge($store_platform_id,$taobao_ids));
            }
        }else{
            if(in_array($store_platform_id,$taobao_ids)){
                return $taobao_ids;
            }
        }
        return $store_platform_id;
    }

    /**
     * 查询店铺平台信息
     * @Author: 易军辉
     * @DateTime:2024-08-23 21:20
     * @param $key code或id
     * @param $type 1、返回id 2、返回名称 3、返回对象
     * @return array|mixed|null
     * @throws \think\db\exception\DataNotFoundException
     * @throws \think\db\exception\DbException
     * @throws \think\db\exception\ModelNotFoundException
     */
    public static  function getPlatform($key,$type=1)
    {
        $item = self::where('code',$key)->whereOr('id',$key)->field('id,code,title,image_id')->find();
        if($item){
            switch ($type) {
                case 1:
                    return $item['id']; // 返回id
                case 2:
                    return $item['title']; // 返回名称
                case 3:
                    return $item['code']; // 返回code
                case 4:
                    return $item; // 返回图标id
                default:
                    return $item; //所有
            }
        }else{
            return null;
        }
    }

    // 关联图片
    public function image()
    {
        return $this->hasOne(FileModel::class, 'file_id', 'image_id')->append(['file_url'])->where(where_disdel());
    }
    /**
     * 获取图片链接
     * @Apidoc\Field("")
     * @Apidoc\AddField("image_url", type="string", desc="图片链接")
     */
    public function getImageUrlAttr($value, $data)
    {
        return $this['image']['file_url'] ?? '';
    }
    //关联店铺
    public function merchantShop()
    {
        return $this->hasMany(MerchantShopModel::class, 'setting_store_platform_id', 'id');
    }

    //关联活动类型
    public function productTypes()
    {
        return $this->belongsToMany(ShopProductTypeModel::class, ShopProductTypeAttributesModel::class, 'shop_product_type_id', 'setting_store_platform_id');
    }
    /**
     * 获取活动分类id
     * @Apidoc\Field("")
     * @Apidoc\AddField("product_type_ids", type="array", desc="活动分类id")
     */
    public function getProductTypeIdsAttr()
    {
        return relation_fields($this['productTypes'], 'id');
    }
    /**
     * 获取活动分类名称
     * @Apidoc\Field("")
     * @Apidoc\AddField("product_type_names", type="string", desc="活动分类名称")
     */
    public function getProductTypeNamesAttr()
    {
        return relation_fields($this['productTypes'], 'title', true);
    }

    // 订单评价示意图
    public function evaluateImage()
    {
        return $this->hasOne(FileModel::class, 'file_id', 'evaluate_image_id')->append(['file_url'])->where(where_disdel());
    }
    /**
     * 获取订单评价示意图链接
     * @Apidoc\Field("")
     * @Apidoc\AddField("image_url", type="string", desc="图片链接")
     */
    public function getEvaluateImageUrlAttr($value, $data)
    {
        return $this['evaluateImage']['file_url'] ?? '';
    }

    // 上月订单示意图
    public function lastMonthImage()
    {
        return $this->hasOne(FileModel::class, 'file_id', 'last_month_image_id')->append(['file_url'])->where(where_disdel());
    }
    /**
     * 获取上月订单示意图链接
     * @Apidoc\Field("")
     * @Apidoc\AddField("image_url", type="string", desc="图片链接")
     */
    public function getLastMonthImageUrlAttr($value, $data)
    {
        return $this['lastMonthImage']['file_url'] ?? '';
    }
    // 上上月订单示意图
    public function monthImage()
    {
        return $this->hasOne(FileModel::class, 'file_id', 'month_image_id')->append(['file_url'])->where(where_disdel());
    }
    /**
     * 获取上上月订单示意图链接
     * @Apidoc\Field("")
     * @Apidoc\AddField("image_url", type="string", desc="图片链接")
     */
    public function getMonthImageUrlAttr($value, $data)
    {
        return $this['monthImage']['file_url'] ?? '';
    }
    // 个人中心示意图
    public function personalCenterImage()
    {
        return $this->hasOne(FileModel::class, 'file_id', 'personal_center_image_id')->append(['file_url'])->where(where_disdel());
    }
    /**
     * 获取个人中心示意图链接
     * @Apidoc\Field("")
     * @Apidoc\AddField("image_url", type="string", desc="图片链接")
     */
    public function getPersonalCenterImageUrlAttr($value, $data)
    {
        return $this['personalCenterImage']['file_url'] ?? '';
    }
}
